package interview.huawei.tjt.training.dongtaiguihua;

import java.util.Scanner;

/**
 * 给定一个整数数组 prices ，它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。
 *
 * 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。
 *
 * 注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
 *
 * 示例 1： 输入：k = 2, prices = [2,4,1] 输出：2 解释：在第 1 天 (股票价格 = 2) 的时候买入，在第 2 天 (股票价格 = 4) 的时候卖出，这笔交易所能获得利润 = 4-2 = 2。
 *
 * 示例 2： 输入：k = 2, prices = [3,2,6,5,0,3] 输出：7 解释：在第 2 天 (股票价格 = 2) 的时候买入，在第 3 天 (股票价格 = 6) 的时候卖出, 这笔交易所能获得利润 = 6-2 = 4。随后，在第 5 天 (股票价格 = 0) 的时候买入，在第 6 天 (股票价格 = 3) 的时候卖出, 这笔交易所能获得利润 = 3-0 = 3 。
 *
 * 提示：
 *
 * 0 <= k <= 100
 * 0 <= prices.length <= 1000
 * 0 <= prices[i] <= 1000
 */
// 优化空间
public class MaxProfitIV_2 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = Integer.parseInt(scanner.nextLine());
        String[] strings = scanner.nextLine().split(",");
        int[] prices = new int[strings.length];
        for (int i = 0; i < strings.length; i ++) {
            if (!strings[i].equals("")) {
                prices[i] = Integer.parseInt(strings[i]);
            }
        }
        // 边界判断, 题目中 length >= 1, 所以可省去
        if (prices.length == 0) {
            System.out.println(0);
        } else {
            /*
             * 定义 2n + 1 种状态:
             * 0: 第一次买入, 1: 第一次卖出, 2: 第二次买入, 3: 第二次卖出,......
             */
            int[] dp = new int[2 * n];
            for (int i = 0; i < 2 * n; i += 2) {
                dp[i] = -prices[0];
            }

            for (int i = 1; i <= prices.length; i++) {
                for (int j = 0; j < 2 * n; j ++) {
                    if ( j == 0) {
                        dp[j] = Math.max(dp[j], -prices[i-1]);
                    } else if ( j % 2 == 1) {
                        dp[j] = Math.max(dp[j], dp[j - 1] + prices[i - 1]);
                    } else if ( j % 2 == 0 && j != 0 ) {
                        dp[j] = Math.max(dp[j], dp[j - 1] - prices[i - 1]);
                    }
                }
            }
            System.out.println(dp[2 * n - 1]);
        }
    }

}
